import { contextBridge, ipcRenderer } from 'electron';

// 定义暴露给渲染进程的 API
const api = {
  // 窗口控制
  window: {
    minimize: () => ipcRenderer.invoke('window:minimize'),
    maximize: () => ipcRenderer.invoke('window:maximize'),
    close: () => ipcRenderer.invoke('window:close'),
  },

  // 视频处理
  video: {
    // 获取视频信息
    getInfo: (filePath: string) => ipcRenderer.invoke('ffmpeg:get-info', filePath),

    // 视频格式转换
    convert: (options: any) => ipcRenderer.invoke('ffmpeg:convert', options),

    // 视频压缩
    compress: (options: any) => ipcRenderer.invoke('ffmpeg:compress', options),

    // 音视频分离
    separate: (options: any) => ipcRenderer.invoke('ffmpeg:separate', options),

    // 视频去水印
    removeWatermark: (options: any) => ipcRenderer.invoke('ffmpeg:remove-watermark', options),

    // 视频加水印
    addWatermark: (options: any) => ipcRenderer.invoke('ffmpeg:add-watermark', options),

    // 视频拼接
    concat: (options: any) => ipcRenderer.invoke('ffmpeg:concat', options),

    // 视频分割
    split: (options: any) => ipcRenderer.invoke('ffmpeg:split', options),

    // 监听进度更新
    onProgress: (callback: (data: any) => void) => {
      ipcRenderer.on('ffmpeg:progress', (_, data) => callback(data));
      return () => ipcRenderer.removeAllListeners('ffmpeg:progress');
    },

    // 取消任务
    cancel: (taskId: string) => ipcRenderer.invoke('ffmpeg:cancel', taskId),
  },

  // 文件对话框
  dialog: {
    openFile: (options: any) => ipcRenderer.invoke('dialog:open-file', options),
    saveFile: (options: any) => ipcRenderer.invoke('dialog:save-file', options),
  },
};

// 暴露 API 到渲染进程
contextBridge.exposeInMainWorld('electronAPI', api);

// TypeScript 类型声明
export type ElectronAPI = typeof api;
